package negocio;

import datos.Usuario;
import java.net.URL;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 *
 * @author Ing. Monica Merlo, Ing. Agustin  Fernandez
 */
@Stateless
public class GestorLogueoBean implements GestorLogueoRemote, GestorLogueoLocal {

    static Logger logger = Logger.getLogger(GestorLogueoBean.class);

    public static void log4j(Exception e) {
        URL url = GestorLogueoBean.class.getResource("/configuracion/log4j.properties");
        PropertyConfigurator.configure(url);
        logger.error(e);

    }
    @PersistenceContext
    private EntityManager em;

    /***
     * Retorna un objeto de tipo Usuario cuyo nombre de usuario y clave coincidan
     * con los parametros usuario y clave respectivamente. En caso contrario retorna Null.
     * @param usuario
     * @param clave
     * @return usuario con nombre de usuario igual a usuario y password igual a clave
     * y null encaso contrario
     * interfaz remota
     */
    public Usuario validarUsuarioRemote(String usuario, String clave) {
        try {
            javax.persistence.Query q = em.createNamedQuery("Usuario.validarUsuario");
            q.setParameter("usuario", usuario);
            q.setParameter("clave", clave);
            return (Usuario) q.getSingleResult();

        } catch (Exception e) {
            GestorLogueoBean.log4j(e);
            return null;
        }

    }

    /***
     * Retorna un objeto de tipo Usuario cuyo nombre de usuario y clave coincidan
     * con los parametros usuario y clave respectivamente. En caso contrario retorna Null.
     * @param usuario
     * @param clave
     * @return usuario con nombre de usuario igual a usuario y password igual a clave
     * y null encaso contrario
     * interfaz local
     */
    public Usuario validarUsuario(String usuario, String clave) {
        try {
            javax.persistence.Query q = em.createNamedQuery("Usuario.validarUsuario");
            q.setParameter("usuario", usuario);
            q.setParameter("clave", clave);
            return (Usuario) q.getSingleResult();

        } catch (Exception e) {
            GestorLogueoBean.log4j(e);
            return null;
        }

    }

    /***
     *
     * @param object
     */
    public void persist(Object object) {
        em.persist(object);
    }
}
